#ifndef INPUT_MESH_H
#define INPUT_MESH_H
/*
*******************************************************************************
** Copyright (C), 2014-2020, TONLY AV R&D CENTER SOFTWARE DEVELOPMENT DEPARTMENT
** FileName: 
** <author>:             
** Date:
** Description:
**
** Others:
** Function List:
**   1.
** History:
**  <Author>    <date>    <content>    <version>
*******************************************************************************
*/
//*****************************************************************************
// File Include
//*****************************************************************************
#include "sl_btmesh_api.h"
#include "light_input_system.h"

//*****************************************************************************
// Local Defines
//*****************************************************************************
#define CDN_VENDOR_OP_NOACK   0X03  //0xC3-0XC0 = 0X03
#define CDN_VENDOR_OP_ACK     0X04  //0xC4-0XC0 = 0X04
#define CDN_VENDOR_OP_SET     0x32  //0XF2-0XC0 = 0X32

#define CDN_ADV_BROADCAST			0xffff
//调光指令
#define DIMMING_UP      1
#define DIMMING_DOWN    2
#define ADJUST_CT_UP    3
#define ADJUST_CT_DOWN  4
#define ADJUST_END      5

#define LIGHT_ON  1
#define LIGHT_OFF 0

//*****************************************************************************
// Local enums
//*****************************************************************************
typedef enum{
  APP_TX_NONE     = 0,
  APP_TX_INQUIRE_GROUP_LEADER,    //0x01.查询组长
  APP_TX_LIGHT_TO_GROUP,          //0x02.灯分组
  APP_TX_VERIFY_GROUP_LEADER,     //0x03.确认某个灯是否是组长
  APP_TX_APPOINT_GROUP_LEADER,    //0x04.任命组长
  APP_TX_SET_GROUP_FUNCTION,      //0x05.设置某组的亮度和色温
  APP_TX_GET_KEY_COUNT,           //0x06.获取按键个数
  APP_TX_KEY_GROUP_BIND,          //0x07.按键与组绑定
  APP_TX_KEY_GROUP_UNBIND,        //0x08.按键与组解除绑定
  APP_TX_KEY_SCENE_BIND,          //0x09.按键与场景绑定
  APP_TX_KEY_SCENE_UNBIND,        //0x0A.按键与场景解除绑定
  APP_TX_KEY_SELECT_BLINK,        //0x0B.控制所有按键灯亮灭
  APP_TX_SET_SCENE_LIGHTNESS_CT,  //0x0C.设置某场景的亮度和色温
  APP_TX_SET_KEY_SCENE_OFF_EN,    //0x0D.设置某按键具备关场景的功能
  APP_TX_FACTORY_RESET,           //0x0E.APP发命令恢复出厂设置
  APP_TX_GROUP_ALL_ONOFF,         //0x0F.广播组灯全开全关
  APP_TX_DELETE_SCENE,            //0x10.APP删除场景
  APP_TX_DELETE_GROUP,            //0x11.APP删除组
  APP_TX_RECALL_SCENE,            //0x12.APP打开场景
  APP_TX_LIGHT_CTRL,              //0x13.单灯控制亮灭
  APP_TX_CCT_BIND,                //0x14.按键与色温绑定
  APP_TX_SET_DRIVER_POWER = 0X1C,  //0x1C.灯驱动器功率设置
  APP_TX_BROADCAST = 0xFF,		  //全局操作指令
}APP_TX_VENDOR_SUB_OP;

typedef enum{
  LIGHT_TX_GROUP_LEADER_ACK  = 0x20,  //组长应答
  LIGHT_TX_GROUP_IF_LEADER,           //该灯是否是组长
  LIGHT_TX_GROUP_LIGHTNESS_CT,        //组长返回灯所在组的亮度和色温
  LIGHT_TX_GROUP_IS_DELETE,						//组长进行删除组应答
}LIGHT_TX_VENDOR_SUB_OP;

typedef enum{
  Body_TX_GROUP_LEADER_ACK  = 0x30,  //组长应答
  BODY_TX_GROUP_IS_DELETE,           //删除组确认
  BODY_TX_RECALL_SCENE,              //调用场景
  BODY_TX_DEVICE_ON_OFF,             //检测到有人/无人时控制其它设备
}BODY_TX_VENDOR_SUB_OP;

typedef enum{
  KEY_TX_LIGHT_ONOFF  = 0x40,   //短按控制组开关灯
  KEY_TX_RECALL_SCENE,          //短按调用场景
  KEY_TX_DIMMING,               //长按调光
  KEY_TX_ACK_KEY_COUNT,         //返回按键个数
  KEY_TX_ADJUST_CCT,            //长按调节色温
  KEY_TX_CCT_ONOFF,             //短按开关色温
}KEY_TX_VENDOR_SUB_OP;

typedef enum{
  DIMMING_MAX = 1, //最大亮度
  DIMMING_MIN = 2, //最小亮度
  COLORTEMP_MAX = 3, //最大色温
  COLORTEMP_MIN = 4, //最小色温
  ADJUST_END_VALUE = 5,
}LIGHT_TX_ADJUST_CMD;

//语音发送指令
typedef enum{
	VOICE_TX_ACK = 0x70, 				//应答手机
  VOICE_TX_ADJ = 0x71, 				//亮/暗/白/暖一点
  VOICE_TX_ROOM_ADJ = 0x72,		//控制整个房间亮/暗/白/暖一点
  VOICE_TX_OTHER_ROOM = 0x73, //控制其它房间红外
  VOICE_TX_GROUP_ALL_ONOFF = 0x74, //语音控制某组设备全开或者全关
  VOICE_TX_ROOM_DEV_ONOFF = 0x75,	 //语音控制某房间设备全开或者全关
  VOICE_TX_SET_GROUP_FUNCTION = 0x76, //语音设置 组 亮度/色温/窗帘百分比
  VOICE_TX_SET_ROOM_FUNCTION = 0x77,	//语音设置 房间 亮度/色温
  VOICE_TX_CTRL_ALL_GROUP = 0x78,			//语音控制所有灯开闭
}VOICE_TX_ADJUST_CMD;

//*****************************************************************************
// Local function declaration
//*****************************************************************************
void mesh_vendor_data_get(sl_btmesh_msg_t *evt);
void MeshEventInputHandler(PInputEvent KeyEvent);

#endif
